package com.lihepeng.leecode.tree;

/**
 * 计算完全二叉树的节点个数
 * 完全二叉树的定义如下：在完全二叉树中，除了最底层节点可能没填满外，其余每层节点数都达到最大值，并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层，则该层包含 1~ 2h 个节点。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/count-complete-tree-nodes
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution222 {
    /**
     * 使用递归的方法完成计算高度
     *
     * @param root
     * @return
     */
    public int countNodes(TreeNode root) {
        if (root == null) {
            return 0;
        }
        int left = countNodes(root.left);
        int right = countNodes(root.right);
        return left + right + 1;
    }

    /**
     * 使用二分查找法加上位运算提升执行效率
     *
     * @param root
     * @return
     */
    public int countNodes01(TreeNode root) {
        if (root == null) {
            return 0;
        }
        return 0;

    }

}
